{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多因子数据复合分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 交叉分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>satisfaction_level</th>\n",
       "      <th>last_evaluation</th>\n",
       "      <th>number_project</th>\n",
       "      <th>average_monthly_hours</th>\n",
       "      <th>time_spend_company</th>\n",
       "      <th>Work_accident</th>\n",
       "      <th>left</th>\n",
       "      <th>promotion_last_5years</th>\n",
       "      <th>department</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.38</td>\n",
       "      <td>0.53</td>\n",
       "      <td>2</td>\n",
       "      <td>157</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.80</td>\n",
       "      <td>0.86</td>\n",
       "      <td>5</td>\n",
       "      <td>262</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>medium</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.88</td>\n",
       "      <td>7</td>\n",
       "      <td>272</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>medium</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0.72</td>\n",
       "      <td>0.87</td>\n",
       "      <td>5</td>\n",
       "      <td>223</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.52</td>\n",
       "      <td>2</td>\n",
       "      <td>159</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>sales</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14994</td>\n",
       "      <td>0.40</td>\n",
       "      <td>0.57</td>\n",
       "      <td>2</td>\n",
       "      <td>151</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>support</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14995</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.48</td>\n",
       "      <td>2</td>\n",
       "      <td>160</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>support</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14996</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.53</td>\n",
       "      <td>2</td>\n",
       "      <td>143</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>support</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14997</td>\n",
       "      <td>0.11</td>\n",
       "      <td>0.96</td>\n",
       "      <td>6</td>\n",
       "      <td>280</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>support</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14998</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.52</td>\n",
       "      <td>2</td>\n",
       "      <td>158</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>support</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>14999 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       satisfaction_level  last_evaluation  number_project  \\\n",
       "0                    0.38             0.53               2   \n",
       "1                    0.80             0.86               5   \n",
       "2                    0.11             0.88               7   \n",
       "3                    0.72             0.87               5   \n",
       "4                    0.37             0.52               2   \n",
       "...                   ...              ...             ...   \n",
       "14994                0.40             0.57               2   \n",
       "14995                0.37             0.48               2   \n",
       "14996                0.37             0.53               2   \n",
       "14997                0.11             0.96               6   \n",
       "14998                0.37             0.52               2   \n",
       "\n",
       "       average_monthly_hours  time_spend_company  Work_accident  left  \\\n",
       "0                        157                   3              0     1   \n",
       "1                        262                   6              0     1   \n",
       "2                        272                   4              0     1   \n",
       "3                        223                   5              0     1   \n",
       "4                        159                   3              0     1   \n",
       "...                      ...                 ...            ...   ...   \n",
       "14994                    151                   3              0     1   \n",
       "14995                    160                   3              0     1   \n",
       "14996                    143                   3              0     1   \n",
       "14997                    280                   4              0     1   \n",
       "14998                    158                   3              0     1   \n",
       "\n",
       "       promotion_last_5years department  salary  \n",
       "0                          0      sales     low  \n",
       "1                          0      sales  medium  \n",
       "2                          0      sales  medium  \n",
       "3                          0      sales     low  \n",
       "4                          0      sales     low  \n",
       "...                      ...        ...     ...  \n",
       "14994                      0    support     low  \n",
       "14995                      0    support     low  \n",
       "14996                      0    support     low  \n",
       "14997                      0    support     low  \n",
       "14998                      0    support     low  \n",
       "\n",
       "[14999 rows x 10 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import scipy.stats as ss\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "import seaborn as sns\n",
    "\n",
    "df = pd.read_csv('./data/HR-all.csv')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "关注各个部门之间left属性离职率是否有明显差异，使用独立t检验方法\n",
    "\n",
    "思路：得到各个部门的离职分布，两两间求t检验的统计量，求出p值，目的是得到各个部门的离职分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 以department进行分组，使用indices得到分组后的索引\n",
    "dp_indices = df.groupby(by='department').indices\n",
    "# dp_indices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 1, ..., 1, 1, 1], dtype=int64)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sales_values = df['left'].iloc[dp_indices['sales']].values\n",
    "technical_values = df['left'].iloc[dp_indices['technical']].values\n",
    "sales_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Ttest_indResult(statistic=-1.0601649378624074, pvalue=0.2891069046174478)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求sales和technical部门间的t检验\n",
    "ss.ttest_ind(sales_values,technical_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        , -1.        , -1.        , -1.        , -1.        ,\n",
       "         0.45049248,  0.8699759 ,  0.10603064,  0.08079527, -1.        ],\n",
       "       [-1.        ,  1.        , -1.        , -1.        ,  0.62589651,\n",
       "        -1.        , -1.        , -1.        , -1.        , -1.        ],\n",
       "       [-1.        , -1.        ,  1.        ,  0.28014632, -1.        ,\n",
       "         0.17267179, -1.        ,  0.2153416 ,  0.35115835,  0.58712105],\n",
       "       [-1.        , -1.        ,  0.28014632,  1.        , -1.        ,\n",
       "        -1.        , -1.        , -1.        , -1.        ,  0.05777944],\n",
       "       [-1.        ,  0.62589651, -1.        , -1.        ,  1.        ,\n",
       "        -1.        , -1.        , -1.        , -1.        , -1.        ],\n",
       "       [ 0.45049248, -1.        ,  0.17267179, -1.        , -1.        ,\n",
       "         1.        ,  0.39331946,  0.60491791,  0.47370349,  0.24747714],\n",
       "       [ 0.8699759 , -1.        , -1.        , -1.        , -1.        ,\n",
       "         0.39331946,  1.        ,  0.10556601,  0.08053988, -1.        ],\n",
       "       [ 0.10603064, -1.        ,  0.2153416 , -1.        , -1.        ,\n",
       "         0.60491791,  0.10556601,  1.        ,  0.71969859,  0.2891069 ],\n",
       "       [ 0.08079527, -1.        ,  0.35115835, -1.        , -1.        ,\n",
       "         0.47370349,  0.08053988,  0.71969859,  1.        ,  0.55898662],\n",
       "       [-1.        , -1.        ,  0.58712105,  0.05777944, -1.        ,\n",
       "         0.24747714, -1.        ,  0.2891069 ,  0.55898662,  1.        ]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求两两间的t检验\n",
    "# 取到所有部门\n",
    "dp_keys = list(dp_indices.keys())\n",
    "# 初始化矩阵\n",
    "dp_t_mat = np.zeros([len(dp_keys),len(dp_keys)])\n",
    "# 求p\n",
    "for i in range(len(dp_keys)):\n",
    "    for j in range(len(dp_keys)):\n",
    "        p_value = ss.ttest_ind(df['left'].iloc[dp_indices[dp_keys[i]]].values,\n",
    "                               df['left'].iloc[dp_indices[dp_keys[j]]].values)[1]\n",
    "        if p_value < 0.05:\n",
    "            dp_t_mat[i][j] = -1\n",
    "        else:\n",
    "            dp_t_mat[i][j] = p_value\n",
    "dp_keys\n",
    "dp_t_mat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画出p值的图，黑色部分表示部门和部门有显著性差异，其他色表示部门和部门没有显著性差异\n",
    "sns.heatmap(dp_t_mat,xticklabels=dp_keys,yticklabels=dp_keys)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用透视表方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Work_accident</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>promotion_last_5years</th>\n",
       "      <th>salary</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">0</td>\n",
       "      <td>high</td>\n",
       "      <td>0.082996</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>low</td>\n",
       "      <td>0.331728</td>\n",
       "      <td>0.090020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>medium</td>\n",
       "      <td>0.230683</td>\n",
       "      <td>0.081655</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">1</td>\n",
       "      <td>high</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>low</td>\n",
       "      <td>0.229167</td>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>medium</td>\n",
       "      <td>0.028986</td>\n",
       "      <td>0.023256</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Work_accident                        0         1\n",
       "promotion_last_5years salary                    \n",
       "0                     high    0.082996  0.000000\n",
       "                      low     0.331728  0.090020\n",
       "                      medium  0.230683  0.081655\n",
       "1                     high    0.000000  0.000000\n",
       "                      low     0.229167  0.166667\n",
       "                      medium  0.028986  0.023256"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "piv_tb = pd.pivot_table(df,values='left',index=['promotion_last_5years','salary'],\n",
    "                        columns=['Work_accident'],aggfunc=np.mean)\n",
    "piv_tb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画出透视表,颜色越深，离职率越高\n",
    "sns.heatmap(piv_tb,vmin=0,vmax=1,cmap=sns.color_palette('Reds',n_colors=256))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分组分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过绘制柱状图，直观的了解到分组情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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TMVC26Yp+ho2bMh7771HeHg4ycnJ3Hvvvee1ee+99xg5ciTh4eFs2LCBcePGAfDOO+8wfPhwWrZsmWPE0bp1a4KDgwkLC+OZZ56hcePGANSoUYOZM2fSt29fIiIiuPvuuwHHrqMFCxZ4PEhdUMaOHcu7775Lnz59OHz4MIGBgQW2bm+e5loTOOA2nQQ0v4T+5UQkAcgEJqvq/3I3EJFhwDCA2rVrX0Gopjg7U7ezr0MwRZCfnx9vvvmma3rfvn18++23lClTxjUvMjKS1atXn9e3SZMmbNy40TV9bgQkIjlGFO66detGt27dcsyrV68emzZtyjPOl19+2XXsIigoKMco5+WXX3Zd/e1+j4t+/frRr59jr/z111/PnDlzKFu2LN9//z3R0dF5bu9SeDNBeNohp5fQv7aqHhKROsC3IrJZVffkWJnqTGAmQHR09KWs25girVq5wByPxlzI5s2beeGFFwC49tprmTVrVoGt25sJIgm4yW26FnAov51V9ZDzca+IxAJRwJ48OxlTQoyIKtizUa42uX+JFwWTJk1i7ty5run09HS6dOnC448/fkXrbdasGZ9++illypRxjUQKijcTxFqgrogEAweB/kC+/tWLSBXgrKr+JiLVgdbAFK9FaowxXjZmzBjGjBnjmt63b1+RLx7otQShqpkiMgL4CvAHZqnqVhGZACSo6kIRaQosAKoAPUXkr6oaAjQE3hKRbBwH0ifnOvvJmCKpYplrcjz6WkBAdo5HYy6FV2sxqepiYHGueePcnq/Fsespd7+VQJg3YzPGG1rf3NfXIeTQvUeqr0MwxZgV6zOmEEy67/frQJN/TnE8HjmcY37fho8WelzG5MUShDHG6z6Z26xA13fXnWsKdH15iY2NZerUqSxatChf7Tds2MChQ4e47bbbAFi4cCHbtm1j9OjzikkUeVaLyRhjLuByylls2LCBxYt/37Peq1evYpkcwEYQxphiavvR7a7nkum47Co9M53tR7dzcP9Bhg4YSsf2HVm9ejURERF07dqVadOmkZyczCeffALAk08+SWpqKuXLl+edd96hfv36vPvuu3z++eekpaVx5swZ19XVAGvXrmXYsGHMnz+f6667jscee4zNmzeTmZnJ+PHj6datG+PGjSM1NZX4+Hiee+45UlNTSUhIYMaMGQwePJhrrrmGhIQEkpKSePrpp+nV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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 关注值为left，向下钻取：向下根据部门department钻取\n",
    "sns.barplot(x='salary',y='left',hue='department',data=df)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 看连续值的直方图分布\n",
    "sl_s = df['satisfaction_level']\n",
    "# sns.barplot(list(range(len(sl_s))),sl_s.sort_values())\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 相关分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 直接使用相关系数\n",
    "sns.heatmap(df.corr(),vmin=-1,vmax=1,cmap=sns.color_palette('RdBu',n_colors=128))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "离散属性的相关性计算，计算熵、条件熵、互信息、熵增益率、相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "s1 = pd.Series(['X1','X1','X2','X2','X2','X2'])\n",
    "s2 = pd.Series(['Y1','Y1','Y1','Y2','Y2','Y2'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9182958340544896"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算熵\n",
    "def getEntropy(s):\n",
    "    if not isinstance(s,pd.core.series.Series):\n",
    "        s = pd.Series(s)\n",
    "    # 得到自身的概率分布，分组-求和-转化为np.array-除以自身长度\n",
    "    prt_ary = s.groupby(by=s).count().values/float(len(s))\n",
    "    return -(np.log2(prt_ary) * prt_ary).sum()\n",
    "\n",
    "getEntropy(s1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "getEntropy(s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5408520829727552"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算条件熵\n",
    "def getCondEntropy(s1,s2):\n",
    "    d = dict()\n",
    "    for i in list(range(len(s1))):\n",
    "        # 准备一个字典，key为s1的值，value为一个数组，s1值下s2的分布\n",
    "        d[s1[i]] = d.get(s1[i],[])+[s2[i]]\n",
    "    return sum([getEntropy(d[k]) * len(d[k]) / float(len(s1)) for k in d])\n",
    "\n",
    "getCondEntropy(s1,s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4591479170272448"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "getCondEntropy(s2,s1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4591479170272448"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算互信息\n",
    "def getEntropyGain(s1,s2):\n",
    "    return getEntropy(s2) - getCondEntropy(s1,s2)\n",
    "\n",
    "getEntropyGain(s1,s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4591479170272448"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "getEntropyGain(s2,s1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4591479170272448"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算增益率\n",
    "def getEntropyGainRatio(s1,s2):\n",
    "    return getEntropyGain(s1,s2) / getEntropy(s2)\n",
    "\n",
    "getEntropyGainRatio(s1,s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "getEntropyGainRatio(s2,s1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4791387674918639"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算离散值的相关性\n",
    "import math\n",
    "def getDiscreteCorr(s1,s2):\n",
    "    return getEntropyGain(s1,s2) / math.sqrt(getEntropy(s1) * getEntropy(s2))\n",
    "\n",
    "getDiscreteCorr(s1,s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4791387674918639"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "getDiscreteCorr(s2,s1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算基尼系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.25"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求概率平方和\n",
    "def getProbSS(s):\n",
    "    if not isinstance(s,pd.core.series.Series):\n",
    "        s = pd.Series(s)\n",
    "    # 得到自身的概率分布，分组-求和-转化为np.array-除以自身长度\n",
    "    prt_ary = s.groupby(by=s).count().values/float(len(s))\n",
    "    return sum(prt_ary**2)\n",
    "\n",
    "# 计算Gini\n",
    "def getGini(s1,s2):\n",
    "    d = dict()\n",
    "    for i in list(range(len(s1))):\n",
    "        # 准备一个字典，key为s1的值，value为一个数组，s1值下s2的分布\n",
    "        d[s1[i]] = d.get(s1[i],[])+[s2[i]]\n",
    "    return 1-sum([getProbSS(d[k]) * len(d[k]) / float(len(s1)) for k in d])\n",
    "\n",
    "getGini(s1,s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2222222222222222"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "getGini(s2,s1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 因子分析（成分分析）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([9.98565340e-01, 8.69246970e-04, 4.73865973e-04, 4.96932182e-05,\n",
       "       2.43172315e-05, 9.29496619e-06, 8.24128218e-06])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "mypca = PCA(n_components=7)\n",
    "# PCA降维，删除离散的属性\n",
    "lower_mat = mypca.fit_transform(df.drop(labels=['salary','department','left'],axis=1))\n",
    "\n",
    "# 重要性存在的比例\n",
    "mypca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制相关图,PCA把原来的特征空间变成了正交的特征空间\n",
    "sns.heatmap(pd.DataFrame(lower_mat).corr(),vmin=-1,vmax=1,cmap=sns.color_palette('RdBu',n_colors=128))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
